查看原文
其他

趁机买走热门包唯一维护人员的邮件域名,我差点发动npm 软件供应链攻击

Thomas Claburn 代码卫士 2022-11-01

 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士



专栏·供应链安全

数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。


随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。


为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。


注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。





最近,安全顾问 Lance Vick 最近买下使用广泛的NPM包 foreach 唯一维护人员的已过期域名,提醒 JavaScript 社区称,NPM 注册表的安全性仍然未得到恰当的保护

Vick 指出,“我发现 NPM库 ‘foreach’ 由唯一一名维护人员控制,而且发现维护人员的域名过期了,所以我赶在其他人之前购买了这个域名。现在我可以控制 ‘foreach’ 库以及依赖于该库的36826个项目。”

这并非事情的全貌。Vick很可能本可以但并未控制 foreach 包。Vick 购买了该维护人员使用的已过期域名并创建NPM账户,并和NPM 上的 “foreach” 包关联。但他表示自己除了向维护人员账户发送密码重置邮件外,并未进行下一步操作。“foreach”程序包的周下载量达到近600万次。

Vick 解释称,“NPM 团队的一名成员指出,和NPM 账户关联的邮箱以及程序包本身使用的邮箱有时候是不同的,但即便如此,控制所有人账户后通过社工客户支持非常容易。我并未登录该账户,因为这样做越界了。我只是发送了一个密码重置邮件实施钓鱼。不管我对这个包的控制程度有多大,NPM 承认这个过期的域名问题是已知问题。一份2021年发布的报告指出,‘我们还发现2818个维护人员的邮箱地址关联已过期域名,可使攻击者通过接管NPM账户劫持8494个程序包。’ 换句话说,任何有此想法的人都会发现可以以这种方式轻松找到账户。我并非运气好或有什么特殊之处。”

Vick 多年来都在尝试和轻视NPM库的人进行沟通,他此番话的意思是接管热门项目的NPM 账户并发动软件供应链攻击非常简单。部分问题在于,JavaScript 开发人员经常使用实现简单函数的程序包。这些函数或者已经构建于该语言之中如 forEach,或者应该手动构造以避免另外一个依赖如 left-pad。这些小的程序包被集成到其它程序包中,后者反过来成为不同程序包的依赖,从而导致攻陷 “foreach” 之类的包很可能成为影响深远的安全事件。

不过抛开JavaScript 现代开发实践的情况,首先关注下程序包维护热门NPM 账户的安全性。2020年1月11日,Vick 以 “Adam Baldwin”的名义在NPM命令行接口的README 文件中推送了一个提交,而Adam Baldwin 当时是NPM 的安全副总裁。Vick 这么做的目的是演示 GitHub 接口中的一个漏洞在合并代码时可被用于伪造签名,从而呼吁大家对NPM 中长期以来存在的安全漏洞的重视。

Vick 解释称,“Git 至少内置了代码签名,而NPM 甚至都没有这么做。这就说明任何人都可以假冒内部开发人员欺骗代码提交。2020年我极其受挫,接受了不良建议,向他们的仓库发送了自己对当下事务的看法并呼吁NPM团队采取行动。为证明这一点,我演示了如何假冒他们的一名安全负责人。”

他还指出自己当时提到,接管顶级NPM账户非常容易,因为多数人并未启用防御钓鱼攻击的双因素认证机制。他在几天前的提交注释中提到,“主流电商平台、大型金融企业如 PayPal,一些主流银行,以及多数大型加密资产交易所的基础设施依赖于NPM程序包,可造成数十亿美元的损失。” 他表示,“我和很多这样的公司在安全能力层面打过交道,我常常近距离观察到因为易受攻击/被劫持程序包或重要账户缺乏2FA 而遭受的严重后果令人痛心。”


点名曝光


Vick 和 John Naulty Jr 一起建立了“一份安全实践糟糕的NPM包维护人员表单”。在恶意提交后的同一天,他发布了博客文章并给出这份清单。Naulty 指出,event-stream 事件发生后,两人希望做点什么。表单上列出的人员大部分都予以回应且很多人都采用了更好的安全实践。他表示,Vick 的行为引发了微软、GitHub 和 NPM生态系统的注意,“最终他们发布了一个特性称该提交和所在组织机构的任何分支都没有关系。”

Naulty指出,2020年年末发生的 SolarWinds 攻击事件引发人们对供应链安全的关注,催生了很多相关主题的创业公司。他赞赏了OpenSSF 等组织机构为提升供应链安全而做出的努力。他提到,其它封装生态系统如 PyPI 具有类似问题,不过开源社区至少做出了努力。他指出,NPM 安全性在改进但仍然可遭受很多种类型的攻击。他说道,“我们只不过是信任互联网上的陌生人会从卡车上拿好吃的糖给我们。”

风险仍然存在。上周二,JFrog 报道称,德国工业企业贝塔斯曼、博世、斯蒂尔和德铁辛克通过NPM程序包中的恶意软件发动NPM供应链攻击,尽管该攻击可能只是引起安全企业注意的渗透测试。

这种风险已存在多年。Vick 在博客文章中提到,在大概近10年前就执行NPM 中开展程序包验证,“我们作为社区整体共同制造了彻底失控的糟糕局面,我认为现在正是大刀阔斧地改正这一点的时候。”


全程实现2FA机制


GitHub 做出了回应,在2021年12月要求所有NPM 维护人员进行登录验证,并在今年2月份推出初步计划,强制要求所有的前100个包维护人员执行2FA 机制。

本周二,GitHub 为所有的NPM账户发布了改良版2FA机制的测试版。开源产品经理 Myles Borins 指出,NPM 账户当前支持:多个第二因素包括安全秘钥、生物识别设备以及认证app;提到管理秘钥和恢复代码的新型2FA 配置;完整的CLI 支持;以及审计并重新生成恢复代码的能力。

Borins 还指出,在本月底即5月31日,GitHub 将推出下一个强制性2FA 队列即位列前500名 npm 程序包的维护人员。之后今年年底,最后一批维护人员即周下载量超过100万次或依赖项超过500个的维护人员将被强制要求采用2FA机制。

GitHub 拒绝就此事置评。

Vick 指出,自己因为GitHub 的这项公告而惊喜不已。

他指出,“尽管时间点有点意思,因为就在今天早上,Github/NPM 才宣布最终为NPM 增加了硬件MFA支持,后者本身就是一大胜利。我真的非常高兴,因为这是保护账户安全的最佳方式。我们安全社区多年来一直都在要求这么做。不过,在多数情况下,开发人员仍然未能正确设立2FA或者邮箱具有安全性薄弱的2FA,因此代码的安全仍然无法保障。恶意或受陷的NPM员工也可随意修改任何代码,而其中一些代码承担着大型金融科技企业数十亿美元的转账业务,我对他们肩负如此重担走来走去一点都不羡慕。”

Vick 认为,用户代码签名能够解决所有的这些问题,“我真心希望 NPM 能尽早采取这一措施。我明天将和他们的团队成员讨论,看看会有什么进展。”




代码卫士试用地址:https://codesafe.qianxin.com
开源卫士试用地址:https://oss.qianxin.com








推荐阅读

在线阅读版:《2021中国软件供应链安全分析报告》全文

RubyGems 包管理器中存在严重的 Gems 接管漏洞

美国商务部机构建议这样生成软件供应链 “身份证”

《软件供应商手册:SBOM的生成和提供》解读

和GitHub 打官司?热门包 SheetJS出走npmjs.com转向自有CDN

不满当免费劳力,NPM 热门库 “colors” 和 “faker” 的作者设无限循环

NPM流行包再起波澜:维护人员对俄罗斯用户发特定消息,谁来保证开源可信?

NPM逻辑缺陷可用于分发恶意包,触发供应链攻击

攻击者“完全自动化”发动NPM供应链攻击

200多个恶意NPM程序包针对Azure 开发人员,发动供应链攻击

哪些NPM仓库更易遭供应链攻击?研究员给出了预测指标

NPM 修复两个严重漏洞但无法确认是否已遭在野利用,可触发开源软件供应链攻击

热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

25个恶意JavaScript 库通过NPM官方包仓库分发

Pwn2Own大赛回顾:利用开源服务中的严重漏洞,攻陷西部数据My Cloud PR4100

开源网站内容管理系统Micorweber存在XSS漏洞

热门开源后端软件Parse Server中存在严重的 RCE ,CVSS评分10分

开源组件11年未更新,严重漏洞使数百万安卓按设备易遭远程监控

开源工具 PrivateBin 修复XSS 漏洞

奇安信开源组件安全治理解决方案——开源卫士




原文链接

https://www.theregister.com/2022/05/10/security_npm_email/

题图:Pixabay License



本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。




奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

    觉得不错,就点个 “在看” 或 "赞” 吧~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存